package com.jinsp.incrementalupdate;

import android.content.Context;

import java.io.File;

/**
 * Created by luoshuai on 8/11/21
 * <p>
 * 增量更新工具
 */
public class IncrementalUpdateUtil {

    static {
        System.loadLibrary("incremental_update");
    }

    /**
     * 合并差分包
     *
     * @param srcApkFilePath 本机原始apk路径
     * @param newApkFilePath 生成新的apk路径
     * @param patchFilePath  差分包路径
     * @return 0--成功，其他失败
     */
    public static native int mergePatch(String srcApkFilePath,
                                        String newApkFilePath,
                                        String patchFilePath);


    /**
     * 增量更新apk并安装
     *
     * @param context        上下文
     * @param newApkFilePath 新生成apk文件路径
     * @return 0--成功，其他失败
     */
    public static int startUpdate(Context context, String newApkFilePath) {
        Context applicationContext = context.getApplicationContext();
        File apkPatchFile = applicationContext.getDir("apk_patch", Context.MODE_PRIVATE);
        //差分包文件，固定文件路径以及文件名
        File patchFile = new File(apkPatchFile, "patch");
        int result = -1;
        if (patchFile.exists()) {
            //当前设备安装app的apk文件
            String srcApkFilePath = applicationContext.getApplicationInfo().sourceDir;
            result = mergePatch(srcApkFilePath, newApkFilePath, patchFile.getAbsolutePath());
        }
        return result;
    }
}
